﻿using System.Collections.ObjectModel;
using System.Windows;

namespace WpfApp1;
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;


public partial class ComboBoxWindowViewModel:ObservableObject
{
    [ObservableProperty] 
    private List<string> _myItem = ["mvvm_list1", "mvvm_list2", "mvvm_list3"];//默认的 List<T> 类型并不支持集合变更的通知,即使修改了集合的内容，绑定到该集合的UI控件也不会自动更新
    
    private string _selectedItem;//Combobox内可以装载很多数据类型，这里定义的数据类型必须与实际的一致
    public string SelectedItem
    {
        get => _selectedItem;
        set
        {
            if (Equals(value, _selectedItem)) return;
            _selectedItem = value;
            OnPropertyChanged();//OnPropertyChanged 方法来通知所有订阅了该属性变更事件的监听者，告诉他们这个属性已经发生了改变。
            MessageBox.Show(value);
        }
    }

    [RelayCommand]
    private void AddItem()
    {
        MyItem.Add("我是增加的Item");
        MessageBox.Show($"集合的数量是{MyItem.Count().ToString()}");
    }
    
    [ObservableProperty]
    private ObservableCollection<string> _myItem2 =["ObservableCollection1","ObservableCollection2","ObservableCollection3"];
    
    [RelayCommand]
    private void AddItem2()
    {
        MyItem2.Add("我是增加的Item");
    }
    
}